#ifndef MAINFORM_H
#define MAINFORM_H

#include <huanframe.h>
#include <centralcontrolform.h>
#include <framecore.h>
#include "demoprotocol.h"
#include <qqtwavaudiomanager.h>
#include <qqtaudiomanager.h>
#include <qqtcolorlabel.h>
#include <huanbutton.h>
#include <caidan1groupbutton.h>
#include <sceneslider.h>

namespace Ui {
class MainForm;
}

class MainForm : public HuanFrame
{
    Q_OBJECT

public:
    explicit MainForm ( QWidget* parent = 0 );
    ~MainForm();

    void initMainForm();

private:
    Ui::MainForm* ui;
    CentralControlForm* centralForm;
    DEMOProtocol* protocol;
    QQtWavAudioManager wavManager;
    QQtAudioManager audioManager;

    // QWidget interface
protected:
    virtual void mouseReleaseEvent ( QMouseEvent* event ) override;

protected:
    void initCaidan1();
    void initCaidan2();
    void initCaidan3();
    void initCaidan4();

    void initCaidan3a();
    void initCaidan3b();
    void initCaidan3c();
    void initCaidan3d();

    void initCaidan4b();
    void initCaidan4a();
    void initCaidan4c();
    void initCaidan4e();

    //这个是初始化的，对开发目录里的初始化，不是运行时。
    void initDengDB();
    /**
     * parent
     * 图标列表
     * 图标直径
     * 列个数。如果=0，则自动匹配。
     * icon间距
     */
    void translateIconTable ( QWidget* parent, const QList<QWidget*>& iconList,
                              int x, int colNum = 0, int spacing = 0 );
    void init4ASearchingLights();
    void init3ATabBar();
    void init3ALights();

    void initCaidan02Scene();
    void initCaidan02B();
    void initCaidan02C();
    void initCaidan02D();
    void initCaidan02E();
    void initCaidan021();

    void initCaidan01Huan();
    void initCaidan01Da ( Caidan1GroupButton* btnGroup );
    void initCaidan01A();
    void initCaidan01AScene();

private slots:
    void changeCurrentForm();
    void changeMainForm();
    void on_lightSpeedSlider_valueChanged ( int value );
    void slotPlayOut();
    void slotLabelClicked();
    void on_pushButton_2_clicked();
    void on_pushButton_search_clicked();

public slots:
    //goto 02 index = 1
    void setCurrentIndex ( int );
    void goto02BForm();
    void preGoto02CForm ( LingWidget* widget );
    void goto02CForm();
    void goto02DForm();
    void goto02EForm();
    void goto021Form();
    void displayDa();
    void goto01AForm();
    void set01ASceneEdit();
    void lingColorChanged ( QRgb );
private:
    QList<QLabel*> m4ALightsList;
    QList<QQtColorLabel*> m3ALightsList;
    QList<HuanButton*> mCaidan2BtnList;
    QList<HuanButton*> mCaidan1BtnList;
    QList<QQtClickWidget*> mCaidan2DIconList;

private:
    LingWidget* mCurLing;

    // QObject interface
public:
    virtual bool eventFilter ( QObject* watched, QEvent* event ) override;
};

#endif // MAINFORM_H
